<ui:composition template="/WEB-INF/templates/layout.xhtml"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui"
>
	<ui:define name="contentTitle">What's new in OmniFaces 1.4.1?</ui:define>

	<ui:define name="content">
	
		<p><em>Release date: 12 March, 2013</em></p>
	
		<h3>Fixed in OmniFaces 1.4.1</h3>
		<ul>
			<li><h:link value="Reverted change in GzipResponseFilter which was made during FacesViews testing, which causes Glassfish to return blank pages" outcome="/filters/GzipResponseFilter" /></li>
		</ul>

		<p:separator />
		
		<h2>What's new in OmniFaces 1.4?</h2>
		

		<p><em>Release date: 11 March, 2013</em></p>
	
		<h3>Added in OmniFaces 1.4</h3>
		<ul>
			<li><h:link value="Faces#getMetadataAttribute() and getMetadataAttributes() methods" outcome="/utils/Faces" /></li>
			<li><h:link value="New 'for' attribute in &lt;o:validator&gt; so that it can target inputs in composites" outcome="/taghandlers/validator" /></li>
			<li><h:link value="New TreeModel#getNextSibling() and getPreviousSibling() methods" outcome="/components/tree" /></li>
			<li><h:link value="of:coalesce() function" outcome="/functions/Objects" /></li>
			<li><h:link value="&lt;o:importFunctions&gt; taghandler to import public static non-void methods of a given type as EL functions" outcome="/taghandlers/importFunctions" /></li>
			<li><h:link value="of:getMonth(), of:getShortMonth(), of:getDayOfWeek() and of:getShortDayOfWeek() functions" outcome="/functions/Dates" /></li>
			<li><h:link value="&lt;o:param&gt; which extends &lt;f:param&gt; with support for a Converter" outcome="/components/param" /></li>
			<li><h:link value="UnmappedResourceHandler which removes the JSF prefix/suffix mapping from resource paths" outcome="/resourcehandlers/UnmappedResourceHandler" /></li>
			<li><h:link value="Major overhaul of FacesViews; support for custom locations (including root) and extension, plus configurable actions when resource with extension or resource on configured path is requested" outcome="/facesviews/ExtensionlessURLs" /></li>
			<li><h:link value="Programmatically getting list of welcome pages and checking if access is allowed to a URL according to security constraints" outcome="utils/WebXml" /></li>
			<li><a href="#{_srcURL}org/omnifaces/eventlistener/VersionLoggerEventListener.java#{_srcVersionParam}">OmniFaces version will now be logged to webapp log in this format: <code>INFO: Using OmniFaces version 1.4</code></a></li>
		</ul>

 		<h3>Changed in OmniFaces 1.4</h3>
		<ul>
			<li><h:link value="Support for Javabeans in Json#encode() as used by Ajax#data()" outcome="/utils/Ajax" /></li>
			<li><h:link value="Recognize and workaround for JUEL 2.2.5 and before bug in &lt;o:methodParam&gt; (not needed for JUEL 2.2.6 and later)" outcome="/taghandlers/methodParam" /></li>
			<li><h:link value="Support spellcheck attribute on HtmlInputText and HtmlInputTextarea by Html5RenderKit" outcome="/renderkits/Html5RenderKit" /></li>
			<li><h:link value="Support autofocus, pattern and placeholder attributes on HtmlInputSecret by Html5RenderKit" outcome="/renderkits/Html5RenderKit" /></li>
			<li><h:link value="Delegate rendering to JSF when currently not in render response phase in FullAjaxExceptionHandler" outcome="/exceptionhandlers/FullAjaxExceptionHandler" /></li>
			<li><h:link value="Skip AbortProcessingException in FullAjaxExceptionHandler" outcome="/exceptionhandlers/FullAjaxExceptionHandler" /></li>
			<li><h:link value="Support java.util.TimeZone argument in of:formatDateWithTimezone()" outcome="/functions/Dates" /></li>
			<li><h:link value="Support com.example.SomeClass.SomeEnum on top of com.example.SomeClass$SomeEnum notation for inner enums in &lt;o:importConstants&gt;" outcome="/taghandlers/importConstants" /></li>
			<li><h:link value="Skip unrendered components during component tree visit of ResetInputAjaxActionListener" outcome="/eventlisteners/ResetInputAjaxActionListener" /></li>
			<li><h:link value="ELException will now also be unwrapped by FacesExceptionFilter in order to improve exception handling in MyFaces" outcome="/filters/FacesExceptionFilter" /></li>
			<li><h:link value="ELException will now also be unwrapped by FullAjaxExceptionFilter in order to improve ajax exception handling in MyFaces" outcome="/exceptionhandlers/FullAjaxExceptionHandler" /></li>
		</ul>

		<h3>Fixed in OmniFaces 1.4</h3>
		<ul>
			<li><h:link value="GzipResponseFilter incorrectly skipped gzip when the written data was not within servletcontainer's and Facelets buffer size" outcome="/filters/GzipResponseFilter" /></li>
			<li><h:link value="Fix initializaiton ordering problem of FacesViews in among others Glassfish server and removed accidentally introduced Servlet 3.0 dependency" outcome="/facesviews/ExtensionlessURLs" /></li>
		</ul>
	
		<p:separator />
		
		<h2>What's new in OmniFaces 1.3?</h2>
		
		<p><em>Release date: 20 December, 2012</em></p>

		<h3>Added in OmniFaces 1.3</h3>
		<ul>
			<li><h:link value="Update specific UIData rows and columns programmatically" outcome="/utils/Ajax" /></li>
			<li><h:link value="&lt;o:enableRestorableView&gt; to prevent ViewExpiredException on a particular view" outcome="/taghandlers/enableRestorableView" /></li>
			<li><h:link value="New validationFailed attribute on &lt;o:validateXxx&gt; multi field validators" outcome="/validators/validateOne" /></li>
			<li><h:link value="&lt;o:validateBean&gt; which allows controlling bean validation on a per-UIInput and UICommand basis" outcome="/validators/validateBean" /></li>
			<li><h:link value="&lt;o:validateUniqueColumn&gt; to validate input elements in single UIColumn on uniqueness" outcome="/validators/validateUniqueColumn" /></li>
			<li><h:link value="of:formatNumberDefault() shortcut EL function to substitute &lt;f:convertNumber&gt; without pattern" outcome="/functions/Numbers" /></li>
			<li><h:link value="SelectItemsIndexConverter which converts select items by their index" outcome="/converters/SelectItemsIndexConverter" /></li>
			<li><h:link value="of:joinArray(), of:joinCollection() and of:joinMap() functions" outcome="/functions/Converters" /></li>
			<li><h:link value="New message attribute on &lt;o:validator&gt; which allows specifying validator message on a per-validator basis" outcome="/taghandlers/validator" /></li>
			<li><h:link value="&lt;o:commandScript&gt; which generates a JavaScript function handler to jsf.ajax.request, so that JSF ajax requests can be invoked by JavaScript" outcome="/components/commandScript" /></li>
			<li><h:link value="of:addXxx() and of:xxxBetween() functions to manipulate/calculate dates" outcome="/functions/Dates" /></li>
			<li><h:link value="of:getDaysOfWeek() and of:getShortDaysOfWeek() functions to retrieve a mapping of days of week" outcome="/functions/Dates" /></li>
		</ul>
		<h3>Changed in OmniFaces 1.3</h3>
		<ul>
			<li><h:link value="Support for RichFaces specific resources in CombinedResourceHandler" outcome="/resourcehandlers/CombinedResourceHandler" /></li>
			<li><h:link value="Support for autofocus in HtmlCommandButton by Html5RenderKit" outcome="/renderkits/Html5RenderKit" /></li>
		</ul>
		<h3>Fixed in OmniFaces 1.3</h3>
		<ul>
			<li><h:link value="Broken delegation of OmniPartialViewContext in RichFaces (caused by RichFaces specific design error)" outcome="/contexts/OmniPartialViewContext" /></li>
			<li><h:link value="Broken delegation of OmniPartialResponseWriter in MyFaces (caused by MyFaces specific design error)" outcome="/contexts/OmniPartialViewContext" /></li>
			<li><h:link value="Broken initial state of EditableValueHolderStateHelper which is used in o:tree (which would only cause input components to appear in an invalidated state on initial request &#8212; and thus also incorrect highlighting in e.g. PrimeFaces) and added check on visit hint to skip iteration" outcome="/components/tree" /></li>
		</ul>
		
		<p:separator />
		
		<h2>What's new in OmniFaces 1.2?</h2>
		
		<p><em>Release date: 20 October, 2012</em></p>
		
		<h3>Added in OmniFaces 1.2</h3>
		<ul>
			<li><h:link value="Character encoding filter" outcome="/filters/CharacterEncodingFilter" /></li>
			<li><h:link value="Resource handler which replaces resource URLs by CDN URLs" outcome="/resourcehandlers/CDNResourceHandler" /></li>
			<li><h:link value="Ignore validation failures on submit" outcome="/taghandlers/ignoreValidationFailed" /></li>
			<li><h:link value="Store outputFormat result in a variable" outcome="/components/outputFormat" /></li>
			<li><h:link value="Several of:format() shortcut EL functions to format strings in EL" outcome="/functions/Strings" /></li>
			<li><h:link value="Ajax utility class to ease programmatically updating components, executing callback scripts and injecting variables in JS scope" outcome="/utils/Ajax" /></li>
			<li><h:link value="OmniPartialViewContext for the Ajax utility class, better exception handling during rendering of ajax response by FullAjaxExceptionHandler and the fix of no-feedback problem when the view is expired during ajax request on a restricted page" outcome="/contexts/OmniPartialViewContext" /></li>
			<li>New multi field validators which validates if <h:link value="ONLY ONE" outcome="/validators/validateOne" /> or <h:link value="ONE or NONE" outcome="/validators/validateOneOrNone" /> of the given inputs has been filled out</li>
			<li><h:link value="of:formatCurrency() and of:formatNumber() EL functions" outcome="/functions/Numbers" /></li>
			<li><h:link value="Generic enum converter for use in UISelectMany components with List&lt;Enum&gt;" outcome="/converters/GenericEnumConverter" /></li>
			<li>Some new utility methods in <h:link value="Faces" outcome="/utils/Faces" /> and <h:link value="Components" outcome="/utils/Components" /></li>
		</ul>
		<h3>Changed in OmniFaces 1.2</h3>
		<ul>
			<li><h:link value="Support to render JS/CSS inline by CombinedResourceHandler" outcome="/resourcehandlers/CombinedResourceHandler" /></li>
			<li><h:link value="Changed generation of combined resource IDs by CombinedResourceHandler so that it's now reversible" outcome="/resourcehandlers/CombinedResourceHandler" /></li>
			<li><h:link value="Improved rendered attribute of o:treeNodeItem so that it can now also see o:tree var/varNode" outcome="/components/tree" /></li>
			<li><h:link value="Improved components attribute of multi field validators so that it's resolved relative to parent UINamingContainer instead of to parent UIForm" outcome="/validators/validateAll" /></li>
			<li><h:link value="Improved multi field validators to recognize UISelectBoolean components as well" outcome="/validators/validateAll" /></li>
			<li><h:link value="Improved FullAjaxExceptionHandler to better handle exceptions during ajax render response phase" outcome="/exceptionhandlers/FullAjaxExceptionHandler" /></li>
			<li><h:link value="Improved o:highlight to apply style class on associated labels as well" outcome="/components/highlight" /></li>
		</ul>
		<h3>Fixed in OmniFaces 1.2</h3>
		<ul>
			<li><h:link value="Serialization and state saving issues in o:cache" outcome="/components/cache" /></li>
			<li><h:link value="Broken behaviour in MyFaces when using null values in SelectItemsConverter" outcome="/converters/SelectItemsConverter" /></li>
			<li><h:link value="Removed accidentally introduced Servlet 3.0 dependency in GzipResponseFilter and improved recognition of non-gzippable responses (content range, etc)" outcome="/filters/GzipResponseFilter" /></li>
			<li><h:link value="Broken behavior of ResetInputAjaxActionListener when both PrimeFaces and RichFaces is used in same webapp" outcome="/eventlisteners/ResetInputAjaxActionListener" /></li>
		</ul>
	
		<p:separator />
	
		<h2>What's new in OmniFaces 1.1?</h2>
		
		<p><em>Release date: 10 July, 2012</em></p>
		
		<h3>Added in OmniFaces 1.1</h3>
		<ul>
			<li><h:link value="Rendering specific components by a GET request parameter" outcome="/components/componentIdParam" /></li>
			<li><h:link value="Form with support to include view parameters in action URL" outcome="/components/form" /></li>
			<li><h:link value="Caching for page fragments with support for scopes, time to live and LRU eviction" outcome="/components/cache" /></li>
			<li><h:link value="f:event hook for pre and post invoke action phase" outcome="/eventlisteners/InvokeActionEventListener" /></li>
			<li><h:link value="GZIP compression filter for HTTP responses" outcome="/filters/GzipResponseFilter" /></li>
			<li><h:link value="of:capitalize() function to capitalize a string" outcome="/functions/Strings" /></li>
			<li><h:link value="HTML5 render kit which adds support for several HTML5 specific attributes to UIForm and UIInput components" outcome="/renderkits/Html5RenderKit" /></li>
			<li><h:link value="Importing constant values into EL scope" outcome="/taghandlers/importConstants" /></li>
			<li><h:link value="New Messages builder" outcome="/utils/Messages" /></li>
			<li><h:link value="A whole bunch of new utility methods in Faces" outcome="/utils/Faces" /></li>
			<li><h:link value="A new builder in Messages which also allows you to set the message detail" outcome="/utils/Messages" /></li>
			<li><h:link value="New validator which validates if ALL of the given inputs have been filled out" outcome="/validators/validateAll" /></li>
			<li>Maven integration</li>
		</ul>
		<h3>Changed in OmniFaces 1.1</h3>
		<ul>
			<li><h:link value="Support for action components inside o:tree and new TreeModel#remove() method" outcome="/components/tree" /></li>
			<li><h:link value="Support for web-fragment.xml in FullAjaxExceptionHandler" outcome="/exceptionhandlers/FullAjaxExceptionHandler" /></li>
			<li><h:link value="Support to exclude or suppress specific resources in CombinedResourceHandler" outcome="/resourcehandlers/CombinedResourceHandler" /></li>
			<li><h:link value="Support for specific ordering type inside o:validateOrder" outcome="/validators/validateOrder" /></li>
		</ul>
		<h3>Fixed in OmniFaces 1.1</h3>
		<ul>
			<li><h:link value="Broken behaviour inside UIData components in ResetInputAjaxActionListener" outcome="/eventlisteners/ResetInputAjaxActionListener" /></li>
			<li><h:link value="Incorrect behaviour on synchronous postbacks and NPE on inline scripts in CombinedResourceHandler" outcome="/resourcehandlers/CombinedResourceHandler" /></li>
		</ul>

		<p:separator />
	
		<h2>What's available in OmniFaces 1.0?</h2>	
		
		<p><em>Release date: 01 June, 2012</em></p>
		
		<h3>Features already available in initial OmniFaces 1.0 release</h3>
		<ul>
			<li><h:link value="Conditional comment rendering for IE" outcome="/components/conditionalComment" /></li>
			<li><h:link value="Highlighting fields that failed validation" outcome="/components/highlight" /></li>
			<li><h:link value="Executing scripts on load of every (ajax) response" outcome="/components/onloadScript" /></li>
			<li><h:link value="OutputLabel automatically setting label of associated input component" outcome="/components/outputLabel" /></li>
			<li><h:link value="Include Servlets and JSP pages in Facelets" outcome="/components/resourceInclude" /></li>
			<li><h:link value="Tree with full custom markup per level (useable for various recursive use cases)" outcome="/components/tree" /></li>
			<li><h:link value="Stateless view parameter" outcome="/components/viewParam" /></li>
			<li><h:link value="Automatic conversion of model objects in drop-downs and other select components" outcome="/converters/SelectItemsConverter" /></li>
			<li><h:link value="Simplified PhaseListener requiring less boiler plate" outcome="/eventlisteners/DefaultPhaseListener" /></li>
			<li><h:link value="Reset for input fields making them always updateable via ajax" outcome="/eventlisteners/ResetInputAjaxActionListener" /></li>
			<li><h:link value="Ajax aware exception handler" outcome="/exceptionhandlers/FullAjaxExceptionHandler" /></li>
			<li><h:link value="Extensionless URLs without need to register individual pages" outcome="/facesviews/ExtensionlessURLs" /></li>
			<li><h:link value="Proper 404 for FacesFileNotFoundException" outcome="/filters/FacesExceptionFilter" /></li>
			<li><h:link value="HttpFilter convenience class as analogy to HttpServlet" outcome="/filters/HttpFilter" /></li>
			<li>Collections of EL functions for dealing with <h:link value="arrays" outcome="/functions/Arrays" />, <h:link value="conversion" outcome="/functions/Converters" />, <h:link value="dates" outcome="/functions/Dates" /> and <h:link value="strings" outcome="/functions/Strings" /></li>
			<li>Convenience managed beans for the <h:link value="current time" outcome="/managedbeans/now" /> and <h:link value="server startup time" outcome="/managedbeans/startup" /></li>
			<li><h:link value="Combining separate scripts and stylesheets to reduce HTTP requests" outcome="/resourcehandlers/CombinedResourceHandler" /></li>
			<li>Render-time evaluation for <h:link value="f:converter" outcome="/taghandlers/converter" /> and <h:link value="f:validator" outcome="/taghandlers/validator" /> attributes</li>
			<li><h:link value="Passing a method expression into Facelets tag" outcome="/taghandlers/methodParam" /></li>
			<li>Collection of Java methods for dealing with <h:link value="components" outcome="/utils/Components" />, <h:link value="events" outcome="/utils/Events" />, <h:link value="exceptions" outcome="/utils/Exceptions" />, <h:link value="messages" outcome="/utils/Messages" /> and <h:link value="JSF in general" outcome="/utils/Faces" /></li>
			<li><h:link value="Checkbox with required attribute that works intuitively" outcome="/validators/RequiredCheckboxValidator" /></li>
			<li>Multi-field validators, for "<h:link value="all or none" outcome="/validators/validateAllOrNone" />", "<h:link value="all equal" outcome="/validators/validateEqual" />", "<h:link value="one or more" outcome="/validators/validateOneOrMore" />", "<h:link value="all in order" outcome="/validators/validateOrder" />" and "<h:link value="all unique" outcome="/validators/validateUnique" />" validations</li>
		</ul>
	</ui:define>
</ui:composition>